package com.shan;

/**
 * @Author: ShanYuqing
 * @Version: v1.0
 */
public class Swap {
    /*
            思路：今后只要涉及到数据交换，联想到第三方的变量

                int a =10;
                int b =20;
                int c = a;
                a=b;
                b=c;

                面试题：实现两个变量的交换，不允许使用第三方变量
     */
    /*
        ^异或：
                特点：
                    1.相同为false，不同为true
                    2.一个数字，被另一个数字异或两次，这数本身不变
        异或操作数的运算过程：
            1.将需要运算的数据，转换为二进制数据
                    0000 1010    10
                    0000 0101    5
            2.将二进制数据0当做false，1当做true，运算
                    0000 1010
                ^   0000 0101
                --------------
                    0000 1111
            3.将运算后的数据转换为十进制
     */
    public static void main(String[] args) {
        int a = 10;
        int b = 20;
        a = a ^ b;   //a=10^20
        b = a ^ b;   //b=10^20^20     b=10
        a = a ^ b;   //a=10^20^10
        System.out.println(a);
        System.out.println(b);
    }
}
